void receive(byte[] data, String ip, int portRX) {

  String value=new String(data);
//  println(value);
  rx_byte_count+=data.length;
  LocalPort = udp.port();
  LocalIp = udp.address();
  //clear receive byte array
  for (int j=0;j<rx_byte.length;j++)
  {
    rx_byte[j]=0;
  }

  //copy received bytes to rx_byte array
  arrayCopy(data, rx_byte);

  //copy bytes to a string and trim string to remove nulls
  messageReceive=new String(rx_byte);
  messageReceive=trim(messageReceive);
  redraw();
 String [] inputStringArr = split(messageReceive, ",");
  if (inputStringArr.length >= 11)//当数据长度大于等于11个数的时候进行如下操作
      { 
           //  Float.parseFloat（）函数的意思是把字符串（String）转成Float型
           //被转换完成的数据依次存储在q[ ]的数组里面
          q[0] = Float.parseFloat(inputStringArr[0])*180/PI;
          q[1] = Float.parseFloat(inputStringArr[1])*180/PI;
          q[2] = Float.parseFloat(inputStringArr[2])*180/PI;
          q[3] = Float.parseFloat(inputStringArr[3])*180/PI;
          q[4] = Float.parseFloat(inputStringArr[4])*180/PI;
          q[5] = Float.parseFloat(inputStringArr[5])*180/PI;
          q[6] = Float.parseFloat(inputStringArr[6]);
          q[7] = Float.parseFloat(inputStringArr[7]);
          q[8] = Float.parseFloat(inputStringArr[8]);
          q[9] = Float.parseFloat(inputStringArr[9]);
          q[10] = Float.parseFloat(inputStringArr[10]);
          //把当前ax ay az gx gy gz 存储在 ax 【】.....中
          ax[0] = q[0];
          ay[0] = q[1];
          az[0] = q[2];
          gx[0] = q[3];
          gy[0] = q[4];
          gz[0] = q[5];
          yaw[0]= q[6];
          pit[0]=  q[7];
          roll[0]= q[8];
          if(q[9] == 1){touch1[0] = true;}
          if(q[9] == 0){touch1[0] = false;}
          if(q[10] == 1){touch2[0] = true;System.currentTimeMillis();}
          if(q[10] == 0){touch2[0] = false;t2 = System.currentTimeMillis();}
//          auxdelay = t1-t2;
//          if(auxdelay<=0){auxdelay = 0;}
          //if(){}
//          touch1[0]=q[9];
//          touch2[0]=q[10];
          //当前值减去上一次的数值
          Delta_acc[0] = abs(ax[0]-ax[1]) + abs(ay[0]-ay[1]) + abs(az[0]-az[1]);
          Delta_agr[0] = abs(gx[0]-gx[1]) + abs(gy[0]-gy[1]) + abs(gz[0]-gz[1]);  
          
          //把上一次ax ay az gx gy gz 的数值赋值给ax【1】 ay【1】.......
          ax[1] = ax[0];
          ay[1] = ay[0];
          az[1] = az[0];
          gx[1] = gx[0];
          gy[1] = gy[0];
          gz[1] = gz[0];
          //*******************************角速度数据是否可以作为鼠标参数，此处做出尝试******************
//          println(gx[1]+" "+gy[1]+" "+gz[1]);
          
          yaw[1]= yaw[0];
          pit[1]= pit[0];
          roll[1]= roll[0];
          touch1[1]=touch1[0];
          touch2[1]=touch2[0];
          
//          //*******************************鼠标左右键事件触发测试打印******************************//
//          print( touch1[1]+"   ");
//          println(touch2[1]+"   ");
          
        }
}
void keyPressed() {
    
    String message  = str( key );  // the message to send
    String ip       = "192.168.4.1";  // the remote IP address
    int port        = 1025;    // the destination port
    
    // formats the message for Pd
    message = message+";\n";
    // send the message
    udp.send( message, ip, port );
       if(key== 'm' || key=='M'){   
        this.frame.setExtendedState(JFrame.ICONIFIED);  // Minimize window
      try { frame.removeNotify(); }catch (Exception e){}
      }
}

